﻿using System;
using System.Text;

namespace SPContentCreator.Code
{
    public class Ipsum
    {
        private static readonly string[] Words = new[]
                                              {
                                                  "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod",
                                                  "tempor", "invidunt", "ut", "labore", "et", "dolore", "magna",
                                                  "aliquyam", "erat", "sed", "diam", "voluptua",
                                                  "at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores",
                                                  "et", "ea", "rebum", "stet", "clita",
                                                  "kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est",
                                                  "lorem", "ipsum", "dolor", "sit", "amet",
                                                  "lorem", "ipsum", "dolor", "sit", "amet", "consetetur", "sadipscing",
                                                  "elitr", "sed", "diam", "nonumy", "eirmod",
                                                  "tempor", "invidunt", "ut", "labore", "et", "dolore", "magna",
                                                  "aliquyam", "erat", "sed", "diam", "voluptua",
                                                  "at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores",
                                                  "et", "ea", "rebum", "stet", "clita",
                                                  "kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est",
                                                  "lorem", "ipsum", "dolor", "sit", "amet",
                                                  "lorem", "ipsum", "dolor", "sit", "amet", "consetetur", "sadipscing",
                                                  "elitr", "sed", "diam", "nonumy", "eirmod",
                                                  "tempor", "invidunt", "ut", "labore", "et", "dolore", "magna",
                                                  "aliquyam", "erat", "sed", "diam", "voluptua",
                                                  "at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores",
                                                  "et", "ea", "rebum", "stet", "clita",
                                                  "kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est",
                                                  "lorem", "ipsum", "dolor", "sit", "amet", "duis",
                                                  "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in",
                                                  "vulputate", "velit", "esse", "molestie",
                                                  "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla",
                                                  "facilisis", "at", "vero", "eros", "et",
                                                  "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit",
                                                  "praesent", "luptatum", "zzril", "delenit",
                                                  "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi",
                                                  "lorem", "ipsum", "dolor", "sit", "amet",
                                                  "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh"
                                                  , "euismod", "tincidunt", "ut", "laoreet",
                                                  "dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim"
                                                  , "ad", "minim", "veniam", "quis",
                                                  "nostrud", "exerci", "tation", "ullamcorper", "suscipit", "lobortis",
                                                  "nisl", "ut", "aliquip", "ex", "ea",
                                                  "commodo", "consequat", "duis", "autem", "vel", "eum", "iriure",
                                                  "dolor", "in", "hendrerit", "in", "vulputate",
                                                  "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore",
                                                  "eu", "feugiat", "nulla", "facilisis", "at",
                                                  "vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim",
                                                  "qui", "blandit", "praesent", "luptatum",
                                                  "zzril", "delenit", "augue", "duis", "dolore", "te", "feugait",
                                                  "nulla", "facilisi", "nam", "liber", "tempor",
                                                  "cum", "soluta", "nobis", "eleifend", "option", "congue", "nihil",
                                                  "imperdiet", "doming", "id", "quod", "mazim",
                                                  "placerat", "facer", "possim", "assum", "lorem", "ipsum", "dolor",
                                                  "sit", "amet", "consectetuer", "adipiscing",
                                                  "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut"
                                                  , "laoreet", "dolore", "magna", "aliquam",
                                                  "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam",
                                                  "quis", "nostrud", "exerci", "tation",
                                                  "ullamcorper", "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex",
                                                  "ea", "commodo", "consequat", "duis",
                                                  "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in",
                                                  "vulputate", "velit", "esse", "molestie",
                                                  "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla",
                                                  "facilisis", "at", "vero", "eos", "et", "accusam",
                                                  "et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita",
                                                  "kasd", "gubergren", "no", "sea",
                                                  "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet"
                                                  , "lorem", "ipsum", "dolor", "sit",
                                                  "amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy",
                                                  "eirmod", "tempor", "invidunt", "ut",
                                                  "labore", "et", "dolore", "magna", "aliquyam", "erat", "sed", "diam",
                                                  "voluptua", "at", "vero", "eos", "et",
                                                  "accusam", "et", "justo", "duo", "dolores", "et", "ea", "rebum",
                                                  "stet", "clita", "kasd", "gubergren", "no",
                                                  "sea", "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit",
                                                  "amet", "lorem", "ipsum", "dolor", "sit",
                                                  "amet", "consetetur", "sadipscing", "elitr", "at", "accusam",
                                                  "aliquyam", "diam", "diam", "dolore", "dolores",
                                                  "duo", "eirmod", "eos", "erat", "et", "nonumy", "sed", "tempor", "et",
                                                  "et", "invidunt", "justo", "labore",
                                                  "stet", "clita", "ea", "et", "gubergren", "kasd", "magna", "no",
                                                  "rebum", "sanctus", "sea", "sed", "takimata",
                                                  "ut", "vero", "voluptua", "est", "lorem", "ipsum", "dolor", "sit",
                                                  "amet", "lorem", "ipsum", "dolor", "sit",
                                                  "amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy",
                                                  "eirmod", "tempor", "invidunt", "ut",
                                                  "labore", "et", "dolore", "magna", "aliquyam", "erat", "consetetur",
                                                  "sadipscing", "elitr", "sed", "diam",
                                                  "nonumy", "eirmod", "tempor", "invidunt", "ut", "labore", "et",
                                                  "dolore", "magna", "aliquyam", "erat", "sed",
                                                  "diam", "voluptua", "at", "vero", "eos", "et", "accusam", "et",
                                                  "justo", "duo", "dolores", "et", "ea",
                                                  "rebum", "stet", "clita", "kasd", "gubergren", "no", "sea", "takimata"
                                                  , "sanctus", "est", "lorem", "ipsum"
                                              };

        public static string GetSentence(int numSentences)
        {
            var result = new StringBuilder();

            for (int j = 0; j <= numSentences; j++)
            {
                var random = new Random(Guid.NewGuid().GetHashCode());
                var numWords = random.Next(3, 20);
                var sentence = GetWords(numWords) + ".";
                sentence = char.ToUpper(sentence[0]) + sentence.Substring(1);

                result.Append(sentence);
                if(j <= numSentences - 1)
                    result.Append(" ");
            }

            return result.ToString();
        }
        
        public static string GetWords(int numWords)
        {
            var result = new StringBuilder();

            for (int i = 0; i <= numWords; i++)
            {
                var random = new Random(Guid.NewGuid().GetHashCode());
                result.Append(Words[random.Next(Words.Length - 1)]);
                if (i <= numWords - 1)
                    result.Append(" ");
            }

            return result.ToString();
        }
    }
}